﻿using System;
using System.Data;
using AS.Componentes.Dados;
using System.Collections;

namespace Classes
{
    public class Persistencia : DAO {
        #region Usuario
        public class Usuario {

            #region GetUsuario
            /// <summary>
            /// GetUsuario
            /// </summary>
            /// <returns>DataSet</returns>
            public static DataSet GetDataSet(Atributos.Parametros parametros) {
                DataSet dataSet = new DataSet();
                try {
                    Sql = String.Concat(" set dateformat 'dmy' ",
                                        " SELECT cod_usuario, nom_usuario,	nom_login ",
                                        " FROM lgalhardi.usuario_template",
                                        " WHERE DTC_ATUALIZACAO between @dataInicio and @dataFim");
                    Parametros.Novo("@dataInicio", parametros.DataInicio.ToShortDateString());
                    Parametros.Novo("@dataFim", parametros.DataFim.ToShortDateString());
                    dataSet = RetornaDataSet();

                } catch {
                    return null;
                }
                return dataSet;
            }
            #endregion

            #region GetDataTable
            /// <summary>
            /// GetUsuario
            /// </summary>
            /// <returns>DataDataTable</returns>        
            public static DataTable GetDataTable() {
                DataTable dts = new DataTable();
                try {
                    Sql = String.Concat(" select cod_usuario, nom_usuario,	nom_login ",
                                        " from lgalhardi.usuario_template");
                    dts = RetonarDataTable();
                } catch (Exception ex) {
                    //return null;
                    throw ex;
                }
                return dts;
            }
            #endregion

            #region Gravar
            /// <summary>
            /// Gravar
            /// </summary>
            /// <returns>void</returns>        
            public static void Gravar(Atributos.Usuario usuario) {
                try {
                    if (IfExiste("lgalhardi.usuario_template", "cod_usuario", usuario.CodUsuario)) {
                        Sql = String.Concat(" UPDATE lgalhardi.usuario_template ",
                                                "   SET nom_usuario  = @nom_usuario, nom_login = @nom_login, ",
                                                "       num_cpf_base = @num_cpf_base , dtc_atualizacao = @dtc_atualizacao ",
                                                "   WHERE cod_usuario = @cod_usuario ");
                        Parametros.Novo("@cod_usuario", usuario.CodUsuario);

                    } else {
                        Sql = String.Concat(" INSERT INTO lgalhardi.usuario_template ",
                                            "   (nom_usuario , nom_login, num_cpf_base, dtc_atualizacao) ",
                                            " VALUES (@nom_usuario, @nom_login, @num_cpf_base, @dtc_atualizacao) ");
                    }

                    Parametros.Novo("@nom_usuario", usuario.NomeUsuario);
                    Parametros.Novo("@nom_login", usuario.NomLogin);
                    Parametros.Novo("@num_cpf_base", usuario.NumCpf);
                    Parametros.Novo("@dtc_atualizacao", usuario.DataAtualizacao);

                    ExecutaSQL();

                } catch (Exception ex) {
                    //return null;
                    throw ex;
                }
            }
            #endregion

            #region GetProcedure
            /// <summary>
            /// GetProcedure
            /// </summary>
            /// <returns>DataTable</returns>        
            public static DataTable GetProcedure() {
                DataTable dataTable = new DataTable();
                try {
                    Sql = String.Concat(" up_seleciona_usuario ");
                    //Parametros.Novo("@sdfasdf", "1212");
                    dataTable = RetonarDataTable();
                } catch (Exception ex) {
                    //return null;
                    throw ex;
                }
                return dataTable;
            }
            #endregion

            #region GetDTO
            /// <summary>
            /// GetUsuario
            /// </summary>
            /// <returns>DataDataTable</returns>        
            /// <see cref="criar classe para gerar log e tratar erro"/>
            public static ArrayList GetDataDTO() {
                DataTable dts = new DataTable();
                ArrayList arrayDados = new ArrayList();
                try {
                    Sql = String.Concat(" select cod_usuario, nom_usuario,	nom_login ",
                                        " from lgalhardi.usuario_template");
                    dts = RetonarDataTable();

                    for (int i = 0; i < dts.Rows.Count; i++) {
                        Atributos.Usuario usuario = new Atributos.Usuario(
                            int.Parse(dts.Rows[i].ItemArray[0].ToString()),
                            dts.Rows[i].ItemArray[1].ToString(),
                            dts.Rows[i].ItemArray[2].ToString());

                        arrayDados.Add(usuario);
                    }
                } catch (Exception ex) {
                    ///<!>criar classe para gerar log e tratar erro
                    return null;
                    throw ex;
                }
                return arrayDados;
            }
            #endregion

        }
        #endregion
    }
}
